package com.sen.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sen.entity.DruginfoEntity;
import com.sen.service.DruginfoService;
import com.sen.utils.HeadChar;
import com.sen.utils.R;
import com.sen.utils.SnowflakeIdWorker;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 药品信息表
 *
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2021-01-08 17:54:40
 */
@RestController
@RequestMapping("druginfo")
public class DruginfoController {
    @Autowired
    private DruginfoService druginfoService;


    /**
     * 分页查询带条件查询所有药品信息（基本信息）
     * @param druginfo
     * @return
     */
    @RequestMapping("/queryAll")
    public R queryAll(@RequestParam Map<String,String> druginfo) {
        Page<DruginfoEntity> page = new Page<>(Integer.parseInt(druginfo.get("current")),Integer.parseInt(druginfo.get("size")));
        IPage<DruginfoEntity> drugList = druginfoService.queryAllDrug(page,druginfo);
        return R.ok().put("drugList", drugList);
    }
    /**
     * 采购查询仓库
     * @param druginfo
     * @return
     */
    @RequestMapping("/queryAll2")
    public R queryAll2(@RequestParam Map<String,String> druginfo) {
        Page<DruginfoEntity> page = new Page<>(Integer.parseInt(druginfo.get("current")),Integer.parseInt(druginfo.get("size")));
        IPage<DruginfoEntity> drugList = druginfoService.queryAllDrug2(page,druginfo);
        return R.ok().put("drugList", drugList);
    }
    /**
     * 分页查询带条件查询所有药品信息（出售信息）
     * @param druginfo
     * @return
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String,String> druginfo) {
        Page<DruginfoEntity> page = new Page<>(Integer.parseInt(druginfo.get("current")),Integer.parseInt(druginfo.get("size")));
        IPage<DruginfoEntity> drugList = druginfoService.querList(page,druginfo);
        return R.ok().put("drugList", drugList);
    }
    /**
     * 增加或者修改删除药品
     *
     * @return
     */
    @PostMapping("/save")
    public R save(Integer mid,
                  String medno,
                  String mname,
                  BigDecimal price,
                  String dname,
                  String description,
                  String edate,
                  Integer tid,
                  Integer cid
    ) {
        DruginfoEntity druginfoEntity = new DruginfoEntity();
        druginfoEntity.setMid(mid);
        druginfoEntity.setMedno(medno);
        druginfoEntity.setMname(mname);
        druginfoEntity.setPrice(price);
        druginfoEntity.setDname(dname);
        druginfoEntity.setDescription(description);
        druginfoEntity.setEdate(edate);
        druginfoEntity.setTid(tid);
        druginfoEntity.setCid(cid);
        boolean b = druginfoService.saveOrUpdate(druginfoEntity);
        if (b){
            return R.ok();
        }else{
            return R.error();
        }
    }

    /**
     * 删除药品信息
     * @param druginfoEntity
     * @return
     */
    @PostMapping("/del")
    public R del(DruginfoEntity druginfoEntity) {
        boolean b = druginfoService.saveOrUpdate(druginfoEntity);
        if (b){
            return R.ok();
        }else{
            return R.error();
        }
    }

    /**
     *通过药品id查询药品
     * @param mid 药品id
     * @return
     */
    @GetMapping("/getDrugById/{mid}")
    public R getDrugById(@PathVariable Integer mid){
        DruginfoEntity druginfoEntity = druginfoService.getById(mid);
        return R.ok().put("drug",druginfoEntity);
    }

    /**
     * 获取药品编号用于自动生成
     * @return
     */
    @GetMapping("/getMedno")
    public R getMedno(){
        String medno = druginfoService.getMedno();
        return R.ok().put("medno",medno);
    }
    /**
     * 删除药品
     * @return
     */
    @PostMapping("/drugInfoDel")
    public R drugInfoDel(Integer mid){
        List<DruginfoEntity> drugs = druginfoService.queryWarehouse(mid);
        System.out.println(drugs);
        //证明还有库存无法删除
        if (drugs.size()!=0){
            return R.error("药品还有库存无法删除");
        }
        else{
            druginfoService.removeById(mid);
            return R.ok();
        }
    }

    /**
     * 获取药品拼音首字母大写
     * @param name
     * @return
     */
    @RequestMapping("/getPinYin")
    public R getPinYin(String name){
        return R.ok().put("pinYin", HeadChar.getPinYinHeadChar(name));
    }
}
